9x9 Hidden Singles.txt

Order 3: digits 9; houses 27, cells 81.

Grid.grid1: initial copying

pending={a3, a5, a6, b4, c1, c2, c3, d2, d5, d7, d8, e4, f2, f7, f9, g7, g9, h2, h3, h6, i3, i4, i5}

deduce.grid1: naked-singles

deduce.grid1: hidden-singles

deduce.grid1.col3. g3 is 1 by hidden-single.

pending={g3}

deduce.grid1: naked-singles

deduce.grid1: hidden-singles

deduce.grid1.col4. g4 is 2 by hidden-single.

pending={g4}

deduce.grid1: naked-singles

deduce.grid1: hidden-singles

deduce.grid1: naked-pairs

two's heap=d4 {3|4}, c4 {4|5}, g5 {5|6}, g6 {5|6}, h7 {7|8}.

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:

grid1
1 2 3 4 5 6 7 8 9
a
   
45 
78 
   
4  
78 
9
1  
456
   
3 2
   
  6
78 
1  
45 
78 
1  
456
 8 
b
  3
45 
 8 
  3
4  
 8 
  3
4  
 8 
7
1  
456
 89
1  
456
 8 
 23
  6
 89
123
45 
 89
12 
456
 89
c 1 6 2
   
45 
   
   
45 
 89
   
45 
 8 
  3
   
789
  3
45 
789
   
45 
 89
d
  3
4  
789
1
  3
4  
78 
  3
4  
   
2
  3
4  
78 
5 6
   
4  
 89
e
 23
4 6
78 
  3
4  
78 
  3
4  
78 
9
1  
456
 8 
1 3
456
78 
 23
   
 8 
 23
4  
 8 
 2 
4  
 8 
f
 23
4 6
 89
5
  3
4  
 8 
  3
4 6
   
   
4 6
 8 
  3
4 6
 8 
1
 23
4  
 89
7
g
   
   
789
   
   
789
1 2
   
 56
   
   
 56
   
4
   
   
789
3
h
  3
4  
78 
2 6
1 3
4  
   
1  
4  
   
9
   
   
78 
1  
 5 
78 
1  
 5 
 8 
i
  3
4  
  9
  3
4  
  9
5 8 7
1 3
4  
   
 2 
  6
  9
12 
   
  9
12 
  6
  9

backtrack.grid1 → grid2: c4 guess 4 ∈ {4|5}

pending={c4}

deduce.grid2: naked-singles

grid2 didn't work: naked-singles ran out of candidates.

…backtrack.grid1 again

backtrack.grid1 → grid3: c4 guess 5 ∈ {4|5}

pending={c4}

deduce.grid3: naked-singles

deduce.grid3: hidden-singles

deduce.grid3: naked-pairs

two's heap=h5 {1|4}, d4 {3|4}, g5 {5|6}, c6 {4|8}, g6 {5|6}, h7 {7|8}.

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:

grid3
1 2 3 4 5 6 7 8 9
a
   
45 
78 
   
4  
78 
9
1  
4 6
   
3 2
   
  6
78 
1  
45 
78 
1  
456
 8 
b
  3
45 
 8 
  3
4  
 8 
  3
4  
 8 
7
1  
4 6
 89
1  
4 6
 8 
 23
  6
 89
123
45 
 89
12 
456
 89
c 1 6 2 5
   
4  
 89
   
4  
 8 
  3
   
789
  3
4  
789
   
4  
 89
d
  3
4  
789
1
  3
4  
78 
  3
4  
   
2
  3
4  
78 
5 6
   
4  
 89
e
 23
4 6
78 
  3
4  
78 
  3
4  
78 
9
1  
456
 8 
1 3
456
78 
 23
   
 8 
 23
4  
 8 
 2 
4  
 8 
f
 23
4 6
 89
5
  3
4  
 8 
  3
4 6
   
   
4 6
 8 
  3
4 6
 8 
1
 23
4  
 89
7
g
   
   
789
   
   
789
1 2
   
 56
   
   
 56
   
4
   
   
789
3
h
  3
4  
78 
2 6
1 3
4  
   
1  
4  
   
9
   
   
78 
1  
 5 
78 
1  
 5 
 8 
i
  3
4  
  9
  3
4  
  9
5 8 7
1 3
4  
   
 2 
  6
  9
12 
   
  9
12 
  6
  9

backtrack.grid3 → grid4: c6 guess 4 ∈ {4|8}

pending={c6}

deduce.grid4: naked-singles

deduce.grid4: hidden-singles

deduce.grid4: naked-pairs

two's heap=i6 {1|3}, h5 {1|4}, d4 {3|4}, a4 {1|6}, g5 {5|6}, c9 {8|9}, g6 {5|6}, c5 {8|9}, h7 {7|8}.

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:

Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:

grid4
1 2 3 4 5 6 7 8 9
a
   
45 
78 
   
4  
78 
9
1  
  6
   
3 2
   
  6
78 
1  
45 
78 
1  
456
 8 
b
  3
45 
 8 
  3
4  
 8 
  3
4  
 8 
7
1  
  6
 89
1  
  6
 8 
 23
  6
 89
123
45 
 89
12 
456
 89
c 1 6 2 5
   
   
 89
4
  3
   
7  
  3
   
7  
   
   
 89
d
  3
4  
789
1
  3
4  
78 
  3
4  
   
2
  3
   
78 
5 6
   
4  
 89
e
 23
4 6
78 
  3
4  
78 
  3
4  
78 
9
1  
456
 8 
1 3
 56
78 
 23
   
 8 
 23
4  
 8 
 2 
4  
 8 
f
 23
4 6
 89
5
  3
4  
 8 
  3
4 6
   
   
4 6
 8 
  3
  6
 8 
1
 23
4  
 89
7
g
   
   
789
   
   
789
1 2
   
 56
   
   
 56
   
4
   
   
789
3
h
  3
4  
78 
2 6
1 3
4  
   
1  
4  
   
9
   
   
78 
1  
 5 
78 
1  
 5 
 8 
i
  3
4  
  9
  3
4  
  9
5 8 7
1 3
   
   
 2 
  6
  9
12 
   
  9
12 
  6
  9

backtrack.grid4 → grid5: a4 guess 1 ∈ {1|6}

pending={a4}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.col4. f4 is 6 by hidden-single.

pending={f4}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.rowe. e1 is 6 by hidden-single.

pending={e1}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.col1. f1 is 2 by hidden-single.

pending={f1}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.rowf. f8 is 9 by hidden-single.

pending={f8}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.rowd. d1 is 9 by hidden-single.

pending={d1}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5.rowg. g2 is 9 by hidden-single.

pending={g2}

deduce.grid5: naked-singles

deduce.grid5: hidden-singles

deduce.grid5: naked-pairs

two's heap=i8 {1|2}, i6 {1|3}, d4 {3|4}, i1 {3|4}, h5 {1|4}, c7 {3|7}, h4 {3|4}, f6 {3|8}, i2 {3|4}, c8 {3|7}, g1 {7|8}, b6 {6|8}, g8 {7|8}, d9 {4|8}, g6 {5|6}, c5 {8|9}, h7 {7|8}, f5 {4|8}, g5 {5|6}, c9 {8|9}.

Naked-pair {3|4} in cells {d4, h4, i1, i2} contained within {rowi, col4, box7}, updating cells {g1, h1, i6, i7, i8, i9}:

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g8, h4, h5, i6}:

Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9, c5, c9}:

Naked-pair {7|8} in cells {g1, g8, h7} contained within {rowg, box9}, updating cells {g5, g6, h8, h9, i7, i8, i9}:

Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:

pending={i6}

deduce.grid5: naked-singles

grid5 didn't work: naked-singles ran out of candidates.

…backtrack.grid4 again

backtrack.grid4 → grid6: a4 guess 6 ∈ {1|6}

pending={a4}

deduce.grid6: naked-singles

deduce.grid6: hidden-singles

deduce.grid6.col4. h4 is 1 by hidden-single.

pending={h4}

deduce.grid6: naked-singles

deduce.grid6: hidden-singles

deduce.grid6.rowh. h1 is 3 by hidden-single.

pending={h1}

deduce.grid6: naked-singles

deduce.grid6: hidden-singles

deduce.grid6: naked-pairs

two's heap=d4 {3|4}, f4 {3|4}, g5 {5|6}, c8 {3|7}, b6 {1|8}, g6 {5|6}, h9 {5|8}, d6 {7|8}, a7 {7|8}, f5 {6|8}, f6 {6|8}, c9 {8|9}, c7 {3|7}, c5 {8|9}, h7 {7|8}, i1 {4|9}, i2 {4|9}.

Naked-pair {3|4} in cells {d4, f4} contained within {col4, box5}, updating cells {d6, e5, e6, f5, f6}:

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8}:

Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9, c5, c9}:

Naked-pair {4|9} in cells {i1, i2} contained within {rowi, box7}, updating cells {g1, g2, i7, i8, i9}:

Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:

pending={a7}

deduce.grid6: naked-singles

grid6 didn't work: naked-singles ran out of candidates.

…backtrack.grid4 again

grid4 didn't work: exhaustive search revealed no solution.

…backtrack.grid3 again

backtrack.grid3 → grid7: c6 guess 8 ∈ {4|8}

pending={c6}

deduce.grid7: naked-singles

deduce.grid7: hidden-singles

deduce.grid7: naked-pairs

two's heap=h5 {1|4}, g5 {5|6}, d4 {3|4}, c9 {4|9}, g6 {5|6}, c5 {4|9}, h7 {7|8}.

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:

Naked-pair {4|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:

grid7
1 2 3 4 5 6 7 8 9
a
   
45 
78 
   
4  
78 
9
1  
4 6
   
3 2
   
  6
78 
1  
45 
78 
1  
456
 8 
b
  3
45 
 8 
  3
4  
 8 
  3
4  
 8 
7
1  
4 6
  9
1  
4 6
   
 23
  6
 89
123
45 
 89
12 
456
 89
c 1 6 2 5
   
4  
  9
8
  3
   
7  
  3
   
7  
   
4  
  9
d
  3
4  
789
1
  3
4  
78 
  3
4  
   
2
  3
4  
7  
5 6
   
4  
 89
e
 23
4 6
78 
  3
4  
78 
  3
4  
78 
9
1  
456
 8 
1 3
456
7  
 23
   
 8 
 23
4  
 8 
 2 
4  
 8 
f
 23
4 6
 89
5
  3
4  
 8 
  3
4 6
   
   
4 6
 8 
  3
4 6
   
1
 23
4  
 89
7
g
   
   
789
   
   
789
1 2
   
 56
   
   
 56
   
4
   
   
789
3
h
  3
4  
78 
2 6
1 3
4  
   
1  
4  
   
9
   
   
78 
1  
 5 
78 
1  
 5 
 8 
i
  3
4  
  9
  3
4  
  9
5 8 7
1 3
4  
   
 2 
  6
  9
12 
   
  9
12 
  6
  9

backtrack.grid7 → grid8: c5 guess 4 ∈ {4|9}

pending={c5}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowb. b5 is 9 by hidden-single.

pending={b5}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowd. d1 is 9 by hidden-single.

pending={d1}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowe. e6 is 1 by hidden-single.

pending={e6}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowe. e1 is 6 by hidden-single.

pending={e1}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowf. f4 is 6 by hidden-single.

deduce.grid8.rowf. f8 is 9 by hidden-single.

pending={f4, f8}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowf. f1 is 2 by hidden-single.

pending={f1}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowg. g2 is 9 by hidden-single.

pending={g2}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowi. i7 is 9 by hidden-single.

pending={i7}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowi. i9 is 6 by hidden-single.

pending={i9}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

deduce.grid8.rowa. a7 is 6 by hidden-single.

pending={a7}

deduce.grid8: naked-singles

deduce.grid8: hidden-singles

grid8 didn't work: more than one hidden-candidate in cell 79.

…backtrack.grid7 again

backtrack.grid7 → grid9: c5 guess 9 ∈ {4|9}

pending={c5}

deduce.grid9: naked-singles

deduce.grid9: hidden-singles

deduce.grid9: naked-pairs

two's heap=h5 {1|4}, d4 {3|4}, g5 {5|6}, c8 {3|7}, e9 {2|8}, c7 {3|7}, g6 {5|6}, d9 {8|9}, h7 {7|8}.

Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:

Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9}:

grid9
1 2 3 4 5 6 7 8 9
a
   
45 
78 
   
4  
78 
9
1  
4 6
   
3 2
   
  6
 8 
1  
 5 
 8 
1  
 56
 8 
b
  3
45 
 8 
  3
4  
 8 
  3
4  
 8 
7
1  
4 6
   
1  
4 6
   
 2 
  6
 89
12 
 5 
 89
12 
 56
 89
c 1 6 2 5 9 8
  3
   
7  
  3
   
7  
4
d
  3
4  
789
1
  3
4  
78 
  3
4  
   
2
  3
4  
7  
5 6
   
   
 89
e
 23
4 6
78 
  3
4  
78 
  3
4  
78 
9
1  
456
 8 
1 3
456
7  
 23
   
 8 
 23
4  
 8 
 2 
   
 8 
f
 23
4 6
 89
5
  3
4  
 8 
  3
4 6
   
   
4 6
 8 
  3
4 6
   
1
 23
4  
 89
7
g
   
   
789
   
   
789
1 2
   
 56
   
   
 56
   
4
   
   
789
3
h
  3
4  
78 
2 6
1 3
4  
   
1  
4  
   
9
   
   
78 
1  
 5 
78 
1  
 5 
 8 
i
  3
4  
  9
  3
4  
  9
5 8 7
1 3
4  
   
 2 
  6
  9
12 
   
  9
12 
  6
  9

backtrack.grid9 → grid10: a7 guess 6 ∈ {6|8}

pending={a7}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowi. i9 is 6 by hidden-single.

pending={i9}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.col4. f4 is 6 by hidden-single.

pending={f4}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowe. e1 is 6 by hidden-single.

pending={e1}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.col1. f1 is 2 by hidden-single.

pending={f1}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowf. f8 is 9 by hidden-single.

pending={f8}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowd. d1 is 9 by hidden-single.

pending={d1}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowh. h1 is 7 by hidden-single.

pending={h1}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowa. a2 is 7 by hidden-single.

pending={a2}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowa. a8 is 8 by hidden-single.

pending={a8}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowb. b3 is 8 by hidden-single.

pending={b3}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowd. d6 is 7 by hidden-single.

pending={d6}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowf. f5 is 8 by hidden-single.

pending={f5}

deduce.grid10: naked-singles

deduce.grid10: hidden-singles

deduce.grid10.rowh. h4 is 3 by hidden-single.

pending={h4}

deduce.grid10: naked-singles

deduce.grid10. Solved.

grid10
1 2 3 4 5 6 7 8 9
a 4 7 9 1 3 2 6 8 5
b 5 3 8 7 6 4 2 1 9
c 1 6 2 5 9 8 7 3 4
d 9 1 3 4 2 7 5 6 8
e 6 8 7 9 1 5 3 4 2
f 2 5 4 6 8 3 1 9 7
g 8 9 1 2 5 6 4 7 3
h 7 2 6 3 4 9 8 5 1
i 3 4 5 8 7 1 9 2 6

grid10. Copying solution to raw grid.